OBJECT Report 50000 DIV and MOD
{
  OBJECT-PROPERTIES
  {
    Date=28/02/15;
    Time=13:36:56;
    Modified=Yes;
    Version List=;
  }
  PROPERTIES
  {
    ProcessingOnly=Yes;
  }
  DATASET
  {
  }
  REQUESTPAGE
  {
    PROPERTIES
    {
    }
    CONTROLS
    {
      { 1000000000;;Container;
                  ContainerType=ContentArea }

      { 1000000001;1;Group  ;
                  CaptionML=[ENU=Example Amount;
                             ENG=Example Amount];
                  GroupType=Group }

      { 1000000002;2;Field  ;
                  Name=ColNo;
                  CaptionML=[ENU=Amount;
                             ENG=Amount];
                  Numeric=Yes;
                  BlankZero=Yes;
                  SourceExpr=Number;
                  MinValue=0;
                  OnValidate=BEGIN
                               CalcNumber(Number);
                             END;
                              }

      { 1000000009;2;Field  ;
                  Name=Billions;
                  CaptionML=[ENU=Billions;
                             ENG=Billions];
                  BlankZero=Yes;
                  SourceExpr=Thousands[3];
                  Editable=FALSE }

      { 1000000007;2;Field  ;
                  Name=TensThou;
                  CaptionML=[ENU=Millions;
                             ENG=Millions];
                  BlankZero=Yes;
                  SourceExpr=Thousands[2];
                  Editable=FALSE }

      { 1000000003;2;Field  ;
                  Name=Thousands;
                  CaptionML=[ENU=Thousands;
                             ENG=Thousands];
                  BlankZero=Yes;
                  SourceExpr=Thousands[1];
                  Editable=FALSE }

      { 1000000004;2;Field  ;
                  Name=Hundreds;
                  CaptionML=[ENU=Hundreds;
                             ENG=Hundreds];
                  BlankZero=Yes;
                  SourceExpr=Hundreds;
                  Editable=FALSE }

      { 1000000005;2;Field  ;
                  Name=Tens;
                  CaptionML=[ENU=Tens;
                             ENG=Tens];
                  BlankZero=Yes;
                  SourceExpr=Tens;
                  Editable=FALSE }

      { 1000000006;2;Field  ;
                  Name=Ones;
                  CaptionML=[ENU=Ones;
                             ENG=Ones];
                  BlankZero=Yes;
                  SourceExpr=Ones;
                  Editable=FALSE }

      { 1000000008;1;Group  ;
                  CaptionML=[ENU=Packaging;
                             ENG=Packaging];
                  GroupType=Group }

      { 1000000013;2;Field  ;
                  Name=ItemNo;
                  CaptionML=[ENU=Item No.;
                             ENG=Item No.];
                  SourceExpr=ItemNo;
                  TableRelation=Item;
                  OnValidate=BEGIN
                               IF NOT Item.GET(ItemNo)THEN
                                 CLEAR(Item);
                             END;
                              }

      { 1000000014;2;Field  ;
                  Name=PrimaryCode;
                  CaptionML=[ENU=Primary (Inner);
                             ENG=Primary (Inner)];
                  SourceExpr=UOMCode[1];
                  OnValidate=BEGIN
                               IF UOMCode[1] <> '' THEN
                                 ItemUOM.GET(ItemNo,UOMCode[1]);
                             END;

                  OnLookup=BEGIN
                             Text := GetItemUOM;
                             EXIT(Text <> '');
                           END;
                            }

      { 1000000015;2;Field  ;
                  Name=SecondaryCode;
                  CaptionML=[ENU=Secondary (Outer);
                             ENG=Secondary (Outer)];
                  SourceExpr=UOMCode[2];
                  OnValidate=BEGIN
                               IF UOMCode[2] <> '' THEN
                                 ItemUOM.GET(ItemNo,UOMCode[2]);
                             END;

                  OnLookup=BEGIN
                             Text := GetItemUOM;
                             EXIT(Text <> '');
                           END;
                            }

      { 1000000016;2;Field  ;
                  Name=TertiaryCode;
                  CaptionML=[ENU=Tertiary (Pallet);
                             ENG=Tertiary (Pallet)];
                  SourceExpr=UOMCode[3];
                  OnValidate=BEGIN
                               IF UOMCode[3] <> '' THEN
                                 ItemUOM.GET(ItemNo,UOMCode[3]);
                             END;

                  OnLookup=BEGIN
                             Text := GetItemUOM;
                             EXIT(Text <> '');
                           END;
                            }

      { 1000000018;2;Field  ;
                  Name=Description;
                  CaptionML=[ENU=Description;
                             ENG=Description];
                  SourceExpr=Item.Description;
                  Editable=FALSE }

      { 1000000012;2;Field  ;
                  Name=Quantity;
                  CaptionML=[ENU=Quantity;
                             ENG=Quantity];
                  Numeric=Yes;
                  BlankZero=Yes;
                  SourceExpr=Quantity;
                  MinValue=0;
                  OnValidate=BEGIN
                               CalcPackaging(Quantity);
                             END;
                              }

      { 1000000019;2;Field  ;
                  Name=Primary;
                  CaptionML=[ENU=Primary;
                             ENG=Primary];
                  BlankZero=Yes;
                  SourceExpr=Result[1];
                  Editable=FALSE }

      { 1000000020;2;Field  ;
                  Name=Secondary;
                  CaptionML=[ENU=Secondary;
                             ENG=Secondary];
                  BlankZero=Yes;
                  SourceExpr=Result[2];
                  Editable=FALSE }

      { 1000000021;2;Field  ;
                  Name=Tertiary;
                  CaptionML=[ENU=Tertiary;
                             ENG=Tertiary];
                  BlankZero=Yes;
                  SourceExpr=Result[3];
                  Editable=FALSE }

      { 1000000010;2;Field  ;
                  Name=Surplus;
                  CaptionML=[ENU=Surplus;
                             ENG=Surplus];
                  BlankZero=Yes;
                  SourceExpr=Result[4];
                  Editable=FALSE }

    }
  }
  LABELS
  {
  }
  CODE
  {
    VAR
      Number@1000000000 : Integer INDATASET;
      Thousands@1000000001 : ARRAY [3] OF Integer;
      Hundreds@1000000002 : Integer;
      Tens@1000000003 : Integer;
      Ones@1000000004 : Integer;
      Packaging@1000000005 : Integer;
      Item@1000000013 : Record 27;
      ItemUOM@1000000014 : Record 5404;
      ItemNo@1000000006 : Code[20];
      UOMCode@1000000007 : ARRAY [3] OF Code[10];
      Quantity@1000000015 : Integer;
      Result@1000000012 : ARRAY [4] OF Integer;

    PROCEDURE CalcNumber@1000000001(Number@1000000000 : Integer);
    VAR
      i@1000000001 : Integer;
    BEGIN
      CLEAR(Thousands);
      CLEAR(Hundreds);
      CLEAR(Tens);
      CLEAR(Ones);

      FOR i := 3 DOWNTO 1 DO
        Thousands[i] := (Number MOD POWER(1000,i + 1)) DIV POWER(1000,i);

      Hundreds := (Number MOD 1000) DIV 100;
      Tens := (Number MOD 100) DIV 10;
      Ones := Number MOD 10;
    END;

    PROCEDURE CalcPackaging@1000000000(Quantity@1000000000 : Integer);
    VAR
      i@1000000001 : Integer;
    BEGIN
      CLEAR(Result);

      IF Quantity = 0 THEN
        EXIT;

      Item.GET(ItemNo);
      FOR i := 1 TO 3 DO
        IF UOMCode[i] <> '' THEN BEGIN
        ItemUOM.GET(ItemNo,UOMCode[i]);
        IF ROUND(ItemUOM."Qty. per Unit of Measure",1) = ItemUOM."Qty. per Unit of Measure" THEN BEGIN
          Result[i] := Quantity DIV ItemUOM."Qty. per Unit of Measure";
          Result[4] := Quantity MOD ItemUOM."Qty. per Unit of Measure";
        END;
      END;
    END;

    PROCEDURE GetItemUOM@1000000002() : Code[10];
    BEGIN
      IF NOT Item.GET(ItemNo)THEN
        EXIT('');

      ItemUOM.RESET;
      ItemUOM.SETRANGE("Item No.",ItemNo);
      IF ItemUOM.ISEMPTY THEN
        EXIT('');

      ItemUOM.FINDSET;
      IF PAGE.RUNMODAL(PAGE::"Item Units of Measure",ItemUOM) = ACTION::LookupOK THEN
        EXIT(ItemUOM.Code);

      EXIT('');
    END;

    BEGIN
    END.
  }
  RDLDATA
  {
  }
}

